import request from '@/config/axios'
import { StudentPaperVO } from '@/api/core/studentpaper'
import { StudentPatentVO } from '@/api/core/studentpatent'

// 候选人 VO
export interface CandidateVO {
  id: string // 候选人ID
  processInstanceId: string // 流程实例ID
  accountId: number // 候选人账号ID
  studentId: number // 学籍ID ustc或imr表主键
  awardId: string // 奖项ID
  awardsName?: string // 年度
  year: string // 奖项ID
  studentLevel: string // 培养层次
  templateId: string // 评奖ID
  templateName?: string // 评奖名称
  awardLevel: string // 评奖层次
  jobCode: string // 学号
  major: string // 专业
  studentName: string // 姓名
  awardMajor: string // 评奖专业
  gender: string // 性别
  accountType: string // 学生类别
  mentorId: number // 导师ID
  mentorName: string // 导师姓名
  mentorCode: string // 导师工号
  researchDeptId: number // 研究部ID
  researchDept: string // 研究部
  processStatus: number // 导师审核流程状态 0=审核中 1=通过 2=不通过 3=撤回 4=取消资格
  qualityStatus: number // 资格审查状态 0=未审查 1=通过 2=不通过 3=无需资格审查
  applySource: number // 来源 1=学生申请 2=表格导入 3=其他奖项导入
  attachment: string // 申请附件
  result: number // 是否获奖 0=未完成评奖 1=已获奖 2=未获奖
  historyAwardsJson: string // 所获优选评选奖项json
  selfIntroduction: string // 自我介绍
  remark: string // 备注
  isInitialJudge?: boolean // 导师是否是初评评委
  isFinalJudge?: boolean // 导师
  studentPaperUseList?: StudentPaperVO[] // 学生论文列表
  studentPatentUseList?: StudentPatentVO[] // 学生专利列表
  cancelReason: string // 取消资格原因 process_status=4有用
}

export interface DifferResultDTO {
  candidateIds: string[] // 候选人ID
  isAward: boolean // 是否获奖
  diffGrade: string // 差额等级
}

// 候选人 API
export const CandidateApi = {
  // 查询候选人分页
  getCandidatePage: async (params: any) => {
    return await request.get({ url: `/awards/candidate/page`, params })
  },

  // 查询候选人详情
  getCandidate: async (id: string) => {
    return await request.get({ url: `/awards/candidate/get?id=` + id })
  },

  // 新增候选人
  createCandidate: async (data: CandidateVO) => {
    return await request.post({ url: `/awards/candidate/create`, data })
  },

  // 修改候选人
  updateCandidate: async (data: CandidateVO) => {
    return await request.put({ url: `/awards/candidate/update`, data })
  },

  // 删除候选人
  deleteCandidate: async (id: string) => {
    return await request.delete({ url: `/awards/candidate/delete?id=` + id })
  },

  // 导出候选人 Excel
  exportCandidate: async (params) => {
    return await request.download({ url: `/awards/candidate/export-excel`, params })
  },

  // 取消候选人资格
  cancelCandidateByAdmin: async (data: Partial<CandidateVO>) => {
    return await request.put({ url: `/awards/candidate/cancel-by-admin`, data })
  },

  // 设置差额评选结果
  setDiffResult: async (data: DifferResultDTO) => {
    return await request.post({ url: `/awards/candidate/diff`, data })
  },

  // 差额评选候选人列表
  getCandidateDiffPage: async (params: any) => {
    return await request.get({ url: `/awards/candidate/diff-list`, params })
  }
}
